package com.tbit.uqbike.enums;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.EnumValue;

/**
 * 车辆标签-取消标签类型
 * 用于追溯取消标签的原因
 *
 * @author <a href="mailto:chen.chaoxiong@tbit.com.cn">ChenChaoXiong</a>
 * @since 2024/7/11
 */
public enum CancelType {
    /**
     * 通过管理后台手动取消
     */
    MANUAL("manual",1, "手动取消"),

    /**
     * 删除标签导致相关的标签绑定记录取消
     */
    DELETE_TAG("deleteTag",2, "删除标签"),

    /**
     * 删除车辆导致车辆相关的标签绑定记录取消
     */
    DELETE_MACHINE("deleteMachine",3, "删除车辆"),

    /**
     * 禁用标签导致相关的标签绑定记录取消
     */
    DISABLE_TAG("disableTag",4, "禁用标签");


    private String code;

    @EnumValue
    private Integer value;

    private String desc;

    @JSONField(serialize = true)
    public String getCode() {
        return code;
    }

    public Integer getValue() {
        return value;
    }

    public String getDesc() {
        return desc;
    }

    CancelType(String code, Integer value, String desc) {
        this.code = code;
        this.value = value;
        this.desc = desc;
    }

    public static CancelType getByCode(String code) {
        for (CancelType type : values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        return null;
    }
}
